package com.yuuko.yuukoapi.repository.system

import com.yuuko.yuukoapi.model.system.Depts
import com.yuuko.yuukoapi.model.system.fetchBy
import com.yuuko.yuukoapi.model.system.parentId
import org.babyfish.jimmer.spring.repository.KRepository
import org.babyfish.jimmer.sql.kt.ast.expression.isNull
import org.springframework.stereotype.Repository

/**
 * <p>
 * DeptsRepository 接口
 * </p>
 *
 * @author yuuko
 * @date 2025-06-20
 */
@Repository
interface DeptsRepository : KRepository<Depts, String> {
    fun findAllTree(): List<Depts> {
        return sql.createQuery(Depts::class) {
            where(table.parentId.isNull())
            select(table.fetchBy {
                allScalarFields()
                `children*`()
            })
        }.execute()
    }
}

